#include "Video.h"

SDL_bool Video::sbInstanciada = SDL_FALSE;

// Construtor padrão
Video::Video()
{
	
    if (sbInstanciada)
    {
        fprintf(stderr,"Classe de video deve ser instanciada uma unica vez!\n");
	SDL_Quit();
	exit(0);
    }
    else
	
    {
        mpTelaAtiva = NULL;
        sbInstanciada = SDL_TRUE;
        mbTelaCheia = SDL_FALSE;
    }
}

SDL_bool Video::inicializa(Uint16 largura, Uint16 altura, SDL_bool telaCheia, Uint8 bpp)
{
    mLargura = largura;
    mAltura = altura;
    mbTelaCheia = telaCheia;
    mProfund = bpp;


    if (SDL_Init(SDL_INIT_VIDEO) < 0)
    {
        fprintf(stderr,"Erro ao inicializar video: \t %s \n",SDL_GetError());
        return SDL_FALSE;
    }
    fprintf(stdout,"SubSistema de video inicializado corretamente...\n");

    if (mbTelaCheia)
    {
	mVideoFlags = SDL_SWSURFACE | SDL_FULLSCREEN;
    }
    else
    {
	mVideoFlags = SDL_SWSURFACE;
    }

    mpTelaAtiva = SDL_SetVideoMode(mLargura, mAltura, mProfund, mVideoFlags);

    if (mpTelaAtiva == NULL)
    {
        fprintf(stderr,"Erro ao inicializar video: \t %s \n",SDL_GetError());
        return SDL_FALSE;
    }

    SDL_ShowCursor(SDL_DISABLE);
    fprintf(stdout,"Video inicializado corretamente...\n");
    return SDL_TRUE;
}


SDL_Surface* Video::retornaTela()
{
    return mpTelaAtiva;
}

Video::~Video()
{
    sbInstanciada = SDL_FALSE;
    fprintf(stdout,"Sistema de video encerrado... \n");
}
